home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / gnu / nihcl-30.lha / nihcl-3.0 / vectest / shortvec.c < prev    next >
C/C++ Source or Header  |  1990-05-16  |  7KB  |  207 lines

  1. /* Test Vector ShortVec class
  2.  
  3.     THIS SOFTWARE FITS THE DESCRIPTION IN THE U.S. COPYRIGHT ACT OF A
  4.     "UNITED STATES GOVERNMENT WORK".  IT WAS WRITTEN AS A PART OF THE
  5.     AUTHOR'S OFFICIAL DUTIES AS A GOVERNMENT EMPLOYEE.  THIS MEANS IT
  6.     CANNOT BE COPYRIGHTED.  THIS SOFTWARE IS FREELY AVAILABLE TO THE
  7.     PUBLIC FOR USE WITHOUT A COPYRIGHT NOTICE, AND THERE ARE NO
  8.     RESTRICTIONS ON ITS USE, NOW OR SUBSEQUENTLY.
  9.  
  10. Author:
  11.         Ted Persky
  12.     Bg. 12A, Rm. 2031
  13.     Computer Systems Laboratory
  14.     Division of Computer Research and Technology
  15.     National Institutes of Health
  16.     Bethesda, Maryland 20892
  17.     Phone: (301) 496-2963
  18.     uucp: uunet!nih-csl!tpersky
  19.     Internet:tpersky@alw.nih.gov
  20.  
  21. Function:
  22.     
  23. Modification History:
  24.     
  25. $Log:    shortvec.c,v $
  26.  * Revision 3.0  90/05/16  23:06:42  kgorlen
  27.  * Release for 1st edition.
  28.  * 
  29. */
  30. #include "IntVec.h"
  31. #include "ShortVec.h"
  32. static char rcsid[] = "$Header: /afs/alw.nih.gov/unix/sun4_40c/usr/local/src/nihcl-3.0/share/vectest/RCS/shortvec.c,v 3.0 90/05/16 23:06:42 kgorlen Rel $";
  33.  
  34. static int initI[] = { 1,3,5 };
  35. static const IntVec I(initI,3);        // I = { 1 3 5 }
  36.  
  37. #ifndef BUG_OPTYPECONST
  38. static ShortVec A(10,1);        // A = { 1 2 3 4 5 6 7 8 9 10 }
  39. static ShortVec B(10,10,-1);        // B = { 10 9 8 7 6 5 4 3 2 1 }
  40. #else
  41. static const ShortVec A(10,1);        // A = { 1 2 3 4 5 6 7 8 9 10 }
  42. static const ShortVec B(10,10,-1);    // B = { 10 9 8 7 6 5 4 3 2 1 }
  43. #endif
  44.  
  45. void test1()
  46. {
  47.     BitVec L;
  48. // TYPEVec_CTOR_I
  49.     ShortVec C;            // C = {}
  50. // TYPEVec_CTOR_TYPEVec    
  51.     ShortVec T(A);            // T = A
  52.     cerr << "ShortVec T(A): " << T << endl;
  53. // TYPEVec_CTOR_TYPESlice
  54.     ShortVec U(A(0,5,2));        // U = { 1 3 5 7 9 }
  55.     cerr << "ShortVec U(A(0,5,2)): " << U << endl;
  56. // TYPEVec_ASN_TYPEVec
  57.     C = U;
  58.     cerr << "C = U: " << C << endl;
  59. // TYPEVec_ASN_TYPEVec
  60.     C = C;
  61.     cerr << "C = C: " << C << endl;
  62. // TYPEVec_ASN_TYPESlice
  63.     C = A(0,5,2);            // C = { 1 3 5 7 9 }
  64.     cerr << "C = A(0,5,2): " << C << endl;
  65. // TYPEVec_ASN_TYPESlice
  66.     C = A;  C = C(0,5,2);        // C = { 1 3 5 7 9 }
  67.     cerr << "C = A; C = C(0,5,2): " << C << endl;
  68. // TYPEVec_ASN_TYPESlct
  69.     C = A[A>B];            // C = { 6 7 8 9 10 }
  70.     cerr << "C = A[A>B]: " << C << endl;
  71. // TYPEVec_ASN_TYPESlct
  72.     C = A;  C = C[C>B];        // C = { 6 7 8 9 10 }
  73.     cerr << "C = A;  C = C[C>B]: " << C << endl;
  74. // TYPEVec_ASN_TYPEPick
  75.     C = A[I];            // C = { 2 4 6 }
  76.     cerr << "C = A[I]: " << C << endl;
  77. // TYPEVec_ASN_TYPEPick
  78.     C = A;  C = C[I];        // C = { 2 4 6 }
  79.     cerr << "C = A;  C = C[I]: " << C << endl;
  80. // TYPEVec_ASN_TYPE
  81.     C = 0;
  82.     cerr << "C = 0: " << C << endl;
  83. // TYPESlice_ASN_TYPEVec
  84.     C = A;  C(0,5,2) = ShortVec(5,-1,0);    // C = { -1 2 -1 4 -1 6 -1 8 -1 10 }
  85.     cerr << "C = A;  C(0,5,2) = ShortVec(5,-1,0): " << C << endl;
  86. // TYPESlice_ASN_TYPESlice
  87.     C(1,5,2) = C(0,5,2);        // C = { -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 }
  88.     cerr << "C(1,5,2) = C(0,5,2): " << C << endl;
  89. // TYPESlice_ASN_TYPEPick
  90.     C(0,3,1) = A[I];        // C = { 2 4 6 -1 -1 -1 -1 -1 -1 -1 }
  91.     cerr << "C(0,3,1) = A[I]: " << C << endl;
  92. // TYPESlice_ASN_TYPESlct
  93.     C(3,3,1) = A[A<=3];        // C = { 2 4 6 1 2 3 -1 -1 -1 -1 }
  94.     cerr << "C(3,3,1) = A[A<=3]: " << C << endl;
  95. // TYPESlice_ASN_TYPE
  96.     C(0,6,1) = 0;            // C = { 0 0 0 0 0 0 -1 -1 -1 -1 }
  97.     cerr << "C(0,6,1) = 0:" << C << endl;
  98. // FRIEND_OP_TYPESlice__TYPEVec
  99.     C = -A;                // C = { -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 }
  100.     cerr << "C = -A: " << C << endl;
  101. // FRIEND_INCDECOP_TYPESlice__TYPEVec
  102. //    C++;                // C = { 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 }
  103.     cerr << "C++: "; (C++).printOn(cerr); cerr << endl;
  104. // FRIEND_TYPESlice_OP_TYPESlice__TYPEvec
  105.     C = A-B;            // C = { -9 -7 -5 -3 -1 1 3 5 7 9 }
  106.     cerr << "C = A-B: " << C << endl;
  107. // FRIEND_TYPESlice_OP_TYPE__TYPEVec
  108.     C = A-1;            // C = { 0 1 2 3 4 5 6 7 8 9 }
  109.     cerr << "C = A-1: " << C << endl;
  110. // FRIEND_TYPE_OP_TYPESlice__TYPEVec
  111.     C = 1 + A;            // C = { 2 3 4 5 6 7 8 9 10 11 }
  112.     cerr << "C = 1+A: " << C << endl;
  113. // FRIEND_TYPESlice_OP_TYPESlice__BitVec
  114.     L = A>B;
  115.     cerr << "A>B: " << L << endl;    // { 0 0 0 0 0 1 1 1 1 1 }
  116. // FRIEND_TYPESlice_OP_TYPE__BitVec
  117.     L = A<=5;            // { 1 1 1 1 1 0 0 0 0 0 }
  118.     cerr << "A<=5: " << L << endl;
  119. // FRIEND_TYPE_OP_TYPESlice__BitVec
  120.     L = 5<A;            // { 0 0 0 0 0 1 1 1 1 1 }
  121.     cerr << "5<A: " << L << endl;
  122. // FRIEND_TYPESlice_ASNOP_TYPESlice
  123.     C = A;  C += A;            // { 2 4 6 8 10 12 14 16 18 20 }
  124.     cerr << "C = A;  C += A: " << C << endl;
  125. // FRIEND_TYPESlice_ASNOP_TYPE
  126.     C -= 1;                    // { 1 3 5 7 9 11 13 15 17 19 }
  127.     cerr << "C -= 1: " << C << endl;
  128. // TYPEPick_ASN_TYPEVec
  129.     C = A;  C[I] = ShortVec(3,-1,0);    // { 1 -1 3 -1 5 -1 7 8 9 10 }
  130.     cerr << "C = A; C[I] =  ShortVec(3,-1,0): " << C << endl;
  131. // TYPEPick_ASN_TYPEPick
  132.     C[I] = A[I];            // { 1 2 3 4 5 6 7 8 9 10 }
  133.     cerr << "C[I] = A[I]: " << C << endl;
  134. // TYPEPick_ASN_TYPESlct
  135.     C[I] = A[A<=3];        // C = { 1 1 3 2 5 3 7 8 9 10 }
  136.     cerr << "C[I] = A[A<=3]: " << C << endl;
  137. // TYPEPick_ASN_TYPESlice
  138.     C[I] = A(0,3,2);        // C = { 1 1 3 3 5 5 7 8 9 10 }
  139.     cerr << "C[I] = A(0,3,2): " << C << endl;
  140. // TYPEPick_ASN_TYPE
  141.     C[I] = -1;            // C = { 1 -1 3 -1 5 -1 7 8 9 10 }
  142.     cerr << "C[I] = -1: " << C << endl;
  143. // TYPESlice_CTOR_TYPEPick
  144.     C = A[I]+B[I];            // C = { 11 11 11 }
  145.     cerr << "C = A[I]+B[I]: " << C << endl;
  146. }
  147.  
  148. void test2()
  149. {
  150.     BitVec L;
  151. // TYPEVec_CTOR_I
  152.     ShortVec C;            // C = {}
  153. // TYPESlct_ASN_TYPEVec
  154.     C = A;  C[A<=5] = ShortVec(5,-1,0);    // C = { -1 -1 -1 -1 -1 6 7 8 9 10 }
  155.     cerr << "C = A; C[A<=5] = ShortVec(5,-1,0): " << C << endl;
  156. // TYPESlct_ASN_TYPEPick
  157.     C = A;  C[A<=3] = A[I];    // C = { 2 4 6 4 5 6 7 8 9 10 }
  158.     cerr << "C = A; C[A<=3] = A[I]: " << C << endl;
  159. // TYPESlct_ASN_TYPESlct
  160.     C = A;  C[A<=5] = B[A<=5];    // C = { 10 9 8 7 6 6 7 8 9 10 }
  161.     cerr << "C = A; C[A<=5] = B[A<=5]: " << C << endl;
  162. // TYPESlct_ASN_TYPESlice
  163.     C[A<=5] = A(0,5,1);        // C = { 1 2 3 4 5 6 7 8 9 10 }
  164.     cerr << "C = A; C[A<=5] = A(0,5,1): " << C << endl;
  165. // TYPESlct_ASN_TYPE
  166.     C[A<=5] = 0;            // C = { 0 0 0 0 0 6 7 8 9 10 }
  167.     cerr << "C = A; C[A<=5] = 0: " << C << endl;
  168. // TYPESlice_CTOR_TYPESlct
  169.     C = A[A<=5] + B[B<=5];    // C = { 6 6 6 6 6 }
  170.     cerr << "C = A[A<=5] + B[B<=5]: " << C << endl;
  171. // FRIEND_abs_TYPESlice
  172.     C = abs(ShortVec(10,-5));    // C = { 5 4 3 2 1 0 1 2 3 4 }
  173.     cerr << "abs(ShortVec(10,-5)): " << C << endl;
  174. // FRIEND_cumsum_TYPESlice
  175.     C = cumsum(ShortVec(10,1));
  176.     cerr << "cumsum(ShortVec(10,1)): " << C << endl;
  177. // FRIEND_delta_TYPESlice
  178.     C = delta(C);
  179.     cerr << "delta(cumsum(ShortVec(10,1))): " << C << endl;
  180. // FRIEND_dot_TYPESlice_TYPESlice
  181.     cerr << "dot(A,B): " << dot(A,B) << endl;
  182. // FRIEND_max_TYPESlice
  183.     cerr << "max(A): " << max(A) << endl;
  184. // FRIEND_min_TYPESlice
  185.     cerr << "min(A): " << min(A) << endl;
  186. // FRIEND_prod_TYPESlice
  187.     cerr << "prod(A(0,5,1)): " << prod(A(0,5,1)) << endl;
  188. // FRIEND_reverse_TYPESlice
  189.     C = reverse(A);
  190.     cerr << "reverse(A): " << C << endl;
  191. // FRIEND_sum_TYPESlice
  192.     cerr << "sum(A): " << sum(A) << endl;
  193. }
  194.  
  195. main()
  196. {
  197.     cerr << "Test Vector ShortVec class\n";
  198. // TYPEVec_CTOR_TYPEPTR_I
  199.     cerr << "IntVec I(3,1,2): " << I << endl;
  200. // TYPEVec_CTOR_I_TYPE_TYPE
  201.     cerr << "ShortVec A(10,1): " << A << endl;
  202. // TYPEVec_CTOR_I_TYPE_TYPE
  203.     cerr << "ShortVec B(10,10,-1): " << B << endl;
  204.     test1();
  205.     test2();
  206. }
  207.